#ifndef __EEPROM_DRV__
#define __EEPROM_DRV__

#include <stdint.h>
#include <stdio.h>
#include "i2c_soft_drv.h"
#include "gd32f30x.h"
#include "delay.h"
#include <stdbool.h>

#define EEPROM_ADDR 0b01010000              // 设备地址
#define EEPROM_SIZE 256                     // 内存256字节
#define EEPROM_PAGE_SIZE 8                  //每一页8个字节
#define EEPROM_REG_FIRST_ADDR  0x00         //设备寄存器首地址

// EEPROM 写入每个页之间 需要有时间间隔 最大的时间间隔为5ms  执行WaitDeviceIsReady一次的时间为60us
#define EEPROM_TIME_SPACE()  WaitDeviceIsReady(EEPROM_ADDR,100)

/**
 * @desc  : EEPROM初始化
 * @date  : 2025-04-21
 * @author: AnRui
 * @note  :
 */
void EepromDrvInit(void);

/**
 * @desc  :
 * @date  : 2025-04-19
 * @author: AnRui
 * @param : reg - {参数说明}:
 * @param : data - {参数说明}:
 * @param : len - {参数说明}:
 * @note  : 注意写入数据时 自能一页一页写 写完一页数据中间要间隔一段时间
 *          第一页  0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07
 *          当前寄存器地址为0x03  第一页的剩余空间为5   8 - 3 / 8
 */
bool WriteEepromData(uint8_t reg, uint8_t* data, uint32_t len);


/**
 * @desc  : 读取EEPROM数据
 * @date  : 2025-04-19
 * @author: AnRui
 * @param : reg - {参数说明}:
 * @param : data - {参数说明}:
 * @param : len - {参数说明}:
 * @return:
 * @note  :
 */
bool ReadEepromData(uint8_t reg, uint8_t* data, uint32_t len);



/**
 * @desc  : EEPROM测试代码
 * @date  : 2025-04-21
 * @author: AnRui
 * @note  :
 */
void EepromTest(void);
#endif // __EEPROM_DRV__
